Friday Notes (Week 10)
Table of Contents
1 Notes
These notes are about the 2020 exam, which is available on the Ed forum.
Pretzel vending machine spec: □(c ⇒ ◇p) The Pretzel vending machine also satisfies this spec: □(p ⇒ ◇c) Two kinds of transition systems: - those that we drive - those that the environment drives and hence, that the environment can block - Transition diagrams l --b; f--> l' (completely absent in this paper) - Labelled transition systems (S,L,→) - S is a set of states - L is a set of labels - → ⊆ S × L × S Transitions don't have guards nor any side effects. Earlier in the course, the atomic propositions in LTL were claims about *states* Now, they are labels: □(c ⇒ ◇p) Q: why ◇ instead of ◯? A: just because generally, use of ◯ is discouraged because it breaks stutter invariance Another LTL formula that would work: □(c ⇒ ◇c) ^^ a silly formula that RvG would want to not hold Q1 (a): Reactive systems interact with an environment; closed systems don't Q1 (b): Compositional method proves things about open systems. LG and AFR only work for closed products Q2 (a): □(close ⇒ ◇open) (b): {open, request} {open, request, timeout} intuitively: the user can block timeout by requesting really fast OTOH: the server could set a super short timeout σ is a behaviour (in the course, a infinite sequence of states) (today, a possibly finite sequence of labels) φ is a temporal logic formula σ ⊧ φ "σ models φ" φ is a true claim about the behaviour σ P is a program (or a transition diagram) (or a LTS) P ⊧ φ "P models φ" for all behaviours that P has, φ is a true claim about that behaviour. P ⊧B φ "P models φ with blockables B" φ is a true statement about: - all behaviours allowed by P - all partial behaviours allowed by P, that can only be extended by actions in B Pretzel system has one behaviour: (cp)^ω When we consider the Pretzel system with blockable actions {c} (cp)^ω, ε, cp, cpcp, cpcpcp, ... P ⊧{c} □◇c <-- that's invalid X neXt is ◯ (next-state) F Finally is ◇ (eventually) G Globally is □ (always) X((X(enabled(t)) ⇒ F(taken(t))) Rob augments ⊧ with two things: - a set of blockable actions (where can traces be cut off in the middle) where you say which actions are environment actions - a completeness criterion (which traces should not be considered) where you plug in fairness conditions *default* completeness criterion - all maximal traces are considered maximal trace: a trace that can't be extended this is often called *progress* "if something can happen, something will happen" Kripke structures are transition systems with: - no labels on the arrows - a *satisfaction relation* that tells you for each state, what's true in that state Ti = tick.Ti A = tick!.ring.A We consider tick.Ti to abbreviate Σ_{1}. a_i.P_i, where a_1 = tick and P_1 and T_i T1 -- tick, {ε} --> T1 __________________________________ _____________________ T1 | T2 -- tick, {L} --> T1 | T2 A -- tick!, {ε} --> ring.A _____________________________________________________________________ (T1 | T2) | A -- τ, {L⬝L, R} -- > (T1 | T2) | ring.A beep ⌣ tick? beep ⌣ tock? For CCS: two transitions are concurrent if they originate from disjoint components tick will always have annotation {L} tock will always have annotation {L} beep will always have annotation {R} Therefore: tick and beep are concurrent; tick tock are not.